/**
  * @brief project RealServer, 定义了类RealServer
  * @file RealServer.h
  * @author Liu Shuo
  * @date 2011.5.16
  */

#ifndef REALSERVER
#define REALSERVER
#include "main.h"

/**
  * @brief 定义了类RealServer
  * @class RealServer
  * @author Liu Shuo
  */
class RealServer{
public:
    RealServer();
    ~RealServer();
    void *heartbeat(void *arg); /**< send heartbeat to the top node */
    int registerToLB();         /**< register to the top node */
    void run();                 /**< 运行服务器 */
    void *handleRequest(int);   /**< 处理请求 */
    void *serve(void *);        /**< 对位服务 */
    void readConf(char *);      /**< 读取配置文件 */
private:
    pthread_t m_servicePthread;     /**< 服务线程ID */
    string m_LBIP;                  /**< 负载均衡服务器的地址 */
    int m_LBHbPort;                 /**< 负载均衡服务器的接收心跳的端口 */
    int m_LBMesgPort;               /**< 负载均衡服务器的接收消息的端口 */
    string m_ID;                    /**< 节点ID */
    int m_servicePort;              /**< 提供服务的端口 */
    struct sockaddr_in m_LBMesgAddr;/**< the address of the LB which to receive message */
};

struct requestArgs{
    RealServer *realServer;     /**< 指向RealServer */
    struct sockaddr_in cliaddr; /**< 客户端的地址结构*/
    int connfd;                 /**< 客户端的socket套接字*/
    string *request;            /**< 客户端的请求内容*/
};

#endif
